home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-10-26 | 4.3 KB | 157 lines | [TEXT/ScoM] |
- HOW TO PROGRAM A GROOVE GENERATOR
-
- Before making a robot that creates 100 new pieces in an hour you
- need to understand the basics. Here is a simple groove box. Run the
- score and keep changing the init-rnd seed. Each time you
- get a new combination based on element definitions.
-
- With current symbols snare perc and hihat might not be in your setup
- what the names say. define drummap or use def-drumset.
-
- What you put in that will come out.
-
- Change element definitions. Replace them with generators.
- What does the timesheet do? Double-click def-section-timesheet.
- When you understand how this score is put together you can add as much
- instruments as you want. Extend the timesheet.
-
- Try randomizing the timesheet and rhythms with pulse-string. See
- the docs and you'll immediately see the possibilities. Use mix-strings
- to combine multiple pulse-string outputs.
-
- Bass is fixed. Try changing it.
-
- If you work on dancable styles keep patterns 1, 2 and max 4 patterns.
- Implement intelligent variation mechanisms. Use analog sounds.
- You'll find it fun to add fractal patterns on top of grooves.
-
- If you are working on zones you are already on the level that you
- can handle randomization on your own based on this example.
-
- If you make enhancements to this example it is appreciated that
- you post it back to the list.
-
- (init-rnd 0.11253334)
-
- (def-orchestra 'orchestra
- all-instruments (drums instruments)
- instruments (bass sequence)
- drums (kick snare hihat perc)
- )
-
- ; element definitions
-
- (setq kicks '(
- ; 1---!---!---!---2---!---!---!---3---!---!---!---4---!---!---!---
- "- - - - - - - - "
- "- - - - - - - - - "
- "- - - - - - - - - - - - - - - - - "
- "- - - - - - - ---"
- ))
-
- (setq snares '(
- ; 1---!---!---!---2---!---!---!---3---!---!---!---4---!---!---!---
- " - - - - - - - - "
- " - - - - - - - - - - - - - - - - "
- " - - - - - - - -- "
- " - - - - "
- ))
-
- (setq hihats '(
- ; 1---!---!---!---2---!---!---!---3---!---!---!---4---!---!---!---
- "------- - -- ------------ -- ---"
- "---- ------- ------- -------- - "
- " - - - - - - - - "
- " - - - - - - - - - - - - - - - "
- "----------------"
- ))
-
- (setq velocities '(
- (90 100 110 120)
- (120 100 110 100)
- (100 120 80 110)
- (127 90)
- (120 100 80)
- ))
-
- (setq symbols '(
- (a b a c)
- (a b c -b)
- (a d c b)
- (a a -b a)
- (a b -b a)
- ))
-
- (setq rhythms '(
- ; 1---!---!---!---2---!---!---!---3---!---!---!---4---!---!---!---
- "- - --- - "
- " -- - - - "
- " - - - -----"
- " -- -- "
- ))
-
- (def-section-timesheet sect-a
- ;
- ; timesheet = bars that the instruments play
- ;
- with 1/1
- tonality drums
- ; 1 9 17 etc bars
- ; !---!---!---!---!---!---!---!---!
- kick "--------------- ------- -- "
- hihat " --------------------- -- "
- perc " ---------------------- "
- snare " ----------------- -- "
- ;
- ; instruments
- ;
- tonality (activate-tonality (hirajoshi c 3))
- ; 1 9 17 etc bars
- ; !---!---!---!---!---!---!---!---!
- bass " ------------ "
- sequence " ----------------"
- ;
- ; drums
- ;
- beat 1/16 ; !---!---!---!---!
- kick (pick-random kicks) '(b) with '(127)
- snare (pick-random snares)
- (list (pick-random '(c d e f)))
- with (pick-random velocities)
- perc (pick-random hihats)
- (list (pick-random '(p q r s t)))
- with (pick-random velocities)
- hihat (pick-random hihats)
- (list (pick-random '(j k l m n)))
- with (pick-random velocities)
- ;
- ; instruments
- ;
- beat 1/16 ; !---!---!---!---!
- legato (fix 1/32)
- sequence (pick-random rhythms)
- (pick-random symbols)
- with (pick-random velocities)
- )
-
- (def-section sect-a
- drums
- channel 10
- bass
- channel 2
- symbol '(a)
- length '(-1/8 1/8)
- velocity '(127)
- sequence
- channel 1
- )
-
- (midiport :printer)
-
- (def-tempo 140)
-
- (play-file-p "boom-says-the-bass"
- all-instruments '(sect-a)
- )
-
-